
package br.academia.util;

import java.util.Collection;

import br.academia.dominio.PersistDB;


/**
 * Classe responsável por fazer a validação de valores para apresentação na
 * visualização.
 *
 */
public class Validador {
	
	/**
	 * Valida se algum campo foi preenchido, e retorna uma mensagem, caso não seja
	 * @param campo
	 * @param valor
	 * @return
	 */
	public static String validaPreenchimento(String campo, Object valor){
		if(isEmpty(valor)){
			return "\""+ campo +"\": preenchimento obrigatório";
		}
		
		return null;
	}
	
	/**
	 * Valida se algum campo foi preenchido com um endereço de email válido
	 * @param campo
	 * @param valor
	 * @return
	 */
	public static String validaEmail(String campo, String email){
		if(!isEmpty(email) && !AcademiaUtil.validaEmail(email)){
			return "Por favor, preencha \""+ campo +"\" com um endereço de email válido.";
		}
		
		return null;
	}
	

	/**
	 * Valida se o campo está preenchido com um valor inteiro
	 * @param campo
	 * @param valor
	 * @return
	 */
	public static String validaInteiro(String campo, String valor){
		try{
			Integer.valueOf(valor);
		}catch(NumberFormatException e){
			return "\""+ campo +"\": apenas números";
		}
		
		return null;
	}
	
	/**
	 * Valida se um objeto é vazio, ou se seu valor é nulo/inutil.
	 * @param obj
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static boolean isEmpty(Object obj){
		if(obj == null){
			return true;
		}else if(obj instanceof PersistDB){
			return ((PersistDB) obj).getId() <= 0;
		}else if(obj instanceof Integer){
			return ((Integer) obj) <= 0; 
		}else if(obj instanceof Collection){
			return ((Collection) obj).isEmpty();
		}else if(obj instanceof String){
			return ((String) obj).trim().isEmpty();
		}
		
		return false;
	}
}